<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>

  <script src="./lib/vue.js"></script>
</body>

</html>
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <script src="./lib/vue.js"></script>
  <style>
    .red {
      color: red;
    }

    .font30 {
      font-size: 30px;
    }
  </style>
</head>

<body>
  <div id="app">
    <!-- 
      如果是对于某一个或多个样式进行开关操作，则使用对象
      如果对于元素进行动态样式的添加操作，则使用数组
    -->
    <!-- 对象方式 -->
    <div :class="redObj">我是一个标题</div>
    <!-- 数组方式 -->
    <div :class="redArr">我是一个标题</div>
    <button @click="closeRed">关闭加红</button>
  </div>

  <script>
    let vm = new Vue({
      el: '#app',
      data: {
        redObj: { red: true },
        redArr: ['red']
      },
      methods: {
        closeRed() {
          // 如果是一个对象，直接给对象中动态添加属性方式，在vue中不生效的，动态的属性没有被劫持
          // this.redObj.font30 = true;
          // console.log(this.redObj)
          // 如果让当前的对象地址发生改变，它就会再劫持一下
          // this.redObj = { ...this.redObj, font30: true }
          // this.redObj = Object.assign({}, this.redObj, { font30: true })
          // this.$set(this.redObj, 'font30', true)


          // vue中提供了7个数组的变异方法，它可以对数组进行劫持 
          // this.redArr.push('font30')
        }
      }
    })
  </script>
</body>

</html>